﻿using System;
using System.Collections.Generic;
using System.Linq;
using Acaweb.Common;
using Acaweb.Model.Entities;
using Acaweb.Model.Entities.DatosCompuestos;
using Components = Acaweb.Componentes.Contracts;

namespace Acaweb.Servicios.Services
{
    
    public class InscripcionesService : Contracts.IInscripcionesService
    {
        Components.IInscritosService _InscritoComponent = AppCtx.Resolve<Components.IInscritosService>();
        Components.IInteresadosService _InteresadoComponent = AppCtx.Resolve<Components.IInteresadosService>();
        Components.IEstudiantesService _EstudianteComponent = AppCtx.Resolve<Components.IEstudiantesService>();

        public void CreateInteresado(Interesados Interesado)
        {
            _InteresadoComponent.CreateInteresado(Interesado);
        }

        public List<Interesados> GetInteresadoByIdentificacion(Identificacion Identificacion)
        {
            return _InteresadoComponent.GetByIdentificacion(Identificacion).ToList();
        }

        public List<Interesados> GetInteresadosByPlanEstudio(int CodigoPlan)
        {
            return _InteresadoComponent.GetByPlanesEstudios(CodigoPlan).ToList();
        }

        public List<Interesados> GetInteresadosByPeriodoAcademico(PeriodoAcademico PeriodoAcademico)
        {
            return _InteresadoComponent.GetByPeriodoAcademico(PeriodoAcademico).ToList();
        }

        public void CreateInscrito(Inscritos Inscrito)
        {
            _InscritoComponent.CreateInscritos(Inscrito);
        }

        public void UpdateInscrito(Inscritos Inscrito)
        {
            _InscritoComponent.UpdateInscritos(Inscrito);
        }

        public List<Inscritos> GetInscritoByIdentificacion(Identificacion Identificacion)
        {
            return _InscritoComponent.GetByIdentificacion(Identificacion).ToList();
        }

        public List<Inscritos> GetInscritoByPlanEstudio(int CodigoPlan)
        {
            return _InscritoComponent.GetByPlanEstudio(CodigoPlan).ToList();
        }

        public List<Inscritos> GetInscritosByPeriodoAcademico(PeriodoAcademico PeriodoAcademico)
        {
            return _InscritoComponent.GetByPeriodoAcademico(PeriodoAcademico).ToList();
        }

        public List<Inscritos> GetInscritosByEstadoAndPeriodoAcademico(int Estado, PeriodoAcademico PeriodoAcademico)
        {
            //Incompleto
            return _InscritoComponent.GetByPeriodoAcademico(PeriodoAcademico).ToList();
        }

        public Inscritos GetInscritosById(int Id)
        {
            return _InscritoComponent.GetById(Id);
        }

        public void AgregarEstudiante(Inscritos Inscrito)
        {
            /*Asociados Asociado = Inscrito;
            Estudiantes Estudiante = (Estudiantes)Asociado;*/

            throw new NotImplementedException();
        }


        public void CreateEstudiante(Estudiantes Estudiante)
        {
            _EstudianteComponent.Create(Estudiante, null);
        }
    }
}